//
//
//class Car implements GroovyInterceptable{
//    def check(){
//        System.out.println "check called..."
//    }
//    def start(){
//        System.out.println 'start called...'
//    }
//
//    def drive(){
//        System.out.println "Drive called..."
//    }
//
//    def invokeMethod(String name, Object args) {
//        System.out.println("Call to $name intercepted...")
//
//        if (name != 'check'){
//            System.out.println "Running filter..."
//            Car.metaClass.getMetaMethod('check').invoke(this, null)
//        }
//        def validMethod = Car.metaClass.getMetaMethod(name, args)
//        if (validMethod != null){
//            validMethod.invoke(this, args)
//        }else{
//            Car.metaClass.invokeMethod(this, name, args)
//        }
//    }
//}
//
//car = new Car()
//car.start()
//car.drive()
//car.check()
//
//try{
//
//}catch(Exception e){
//    println e.getMessage()
//}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
////println "Properties of 'hello' are:"
////'hello'.properties.each {
////    println it
////}
////def printInfo(obj) {
////    usrRequestedProperty = 'bytes'
////    usrRequestedMethod = 'toUpperCase'
////
////    println obj[usrRequestedProperty]
////    println obj."$usrRequestedProperty"
////    println obj."$usrRequestedMethod"()
////    println obj.invokeMethod(usrRequestedMethod, null)
////}
////
////printInfo('hello')
////
////
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
